#ifndef _STATEMENTLIST_
#define _STATEMENTLIST_

#include "Statement.h"
#include <vector>

using namespace std;

class StatementList: public Statement
{
public:
    StatementList(vector<TreeNode*> iStatements);
    virtual ~StatementList();
    virtual void CheckVariables(set<string>& oVariables, string iParentName);
    virtual void CheckFunctionCalls(set<FunctionDefinition*>& iAllFunctions, string iParentName);
    virtual void CheckClassConstructions(set<ClassDefinition*>& iAllClasses, string iParentName);
    virtual void CheckExpressionTypes(map<string, ExpressionType*>& iVarTypes, string iParentName);
    virtual ReturnStatement* GetFirstReturnStatement();
    virtual void Accept(GeneralVisitor* iVisitor);

    vector<TreeNode*> GetStatements() { return fStatements; }

private:
    vector<TreeNode*> fStatements;
};

#endif
